// let a = 10;
// console.log(a);


//es5 var 

//es6 let const  const定义常量:定义时必须赋值，后续不能再修改

/*
1>let const 没有变量提升

2>不会成为顶层对象window的属性

3>在同一作用域内不能重复定义

4>暂时性死区：在局部定义的变量会暂时封锁在该区域，其他区域和它同名的都不可用

*/


// let a = 10;
// console.log(window.a); //10

// let num = 1;

// //.....


// let num = 10;

// console.log(num);  //10

//作用域：

//es5: 函数作用域  全局作用域

//es6：块级作用域  {}

// let a = 1;

// {
//     let a = 10;
// }

// console.log(a);


// var  arr = [];

// for(var i = 0;i<10;i++){
//     arr[i] = function(){
//         console.log(i)
//     }
// }

// arr[1](); //10

// arr[5](); //10

// let arr = [];
// for(let i = 0;i<10;i++){
//     arr[i] = function(){
//         console.log(i)
//     }
// }

// arr[1](); //

// arr[2](); //

// let num = 10;
// if(num < 20){
//     console.log(num);   
//     let num = 4;
// }

// function fun(){
//     console.log(num);
//     let num = 4;
// }

// fun();


// const 

// const a = 10;

// a = 20;

// console.log(a);

// array  object  引用类型

// const arr = [1,2,3];
// arr.push(4); //[1,2,3,4]
// arr = 10;
// console.log(arr);

// const obj = {name:'lili'};

// obj.name ="zs";
// obj = 'lili';

// console.log(obj)
// const num;

//es6允许我们按照一定的模式，从数组或对象提取值，给变量进行赋值，解构赋值

//1>给变量赋值  2>从数组或对象  3>按照一定的模式


//数组的解构  可以给默认值

// let arr = [1,2,3];
// let a = arr[0];
// let b = arr[1];
// let c = arr[2];

// let [a,b=2,c] = [1,undefined,{name:'lili'}];

// let [a,[b],c] = [1,[2,3],4];

// console.log(a,b,c);

//交换值

// let a = 10;
// let b = 20;

// [a,b] = [b,a];

// console.log(a,b);

// let [username,pwd] = document.querySelectorAll('input');

// console.log(username.value,pwd.value);

//对象解构

// let obj = {name:'lili',age:19};

// let {name} = {name:'lili',age:undefined};

// console.log(name,age);

//应用一：函数返回值的解构

//函数:1>参数  2>返回值  3> 功能  4>在何处调用

//年 月
// function getDate(){
//     let date = new Date();

//     let y = date.getFullYear();

//     let m = date.getMonth() + 1;

//     return {y,m}  //属性名为变量名 属性值是变量值
// }

// let {y:year=2018,m:month} = getDate();
// console.log(year,month);

// let str = 'abc';
// let [z,x] = str;
// console.log(z,x); //a b

// let [a,b] = {name:'lili'};
// console.log(a,b); //报错

// let {name} = [1,2];
// console.log(name);

//应用二：函数参数

// function ajax({url,method='get'}){
//     console.log(url,method);
// }

// ajax({url:'/api/list'})

// function sum([a,b=4]){

// }

// sum([1,2])

//<div style="font-size:12px;" class="wrap"><p>hello es6</p></div>

// let obj = {
//     tagName:'div',
//     props:{
//         style:'font-size:12px',
//         class:'wrap'
//     },
//     children:{
//         tagName:'p',
//         children:'hello es6'
//     }
// };

// function createElement(obj){
//     let {tagName,props,children} = obj;

//     let el = document.createElement(tagName);

//     document.body.appendChild(el);

//     if(props){
//         for(let i in props){
//             el.setAttribute(i,props[i]);
//         }
//     }

//     if(typeof children === 'object'){
//         el.appendChild(createElement(children))
//     }else{
//         el.innerHTML = children;
//     }

//     return el
// }

// createElement(obj)

console.log(centerPad('Hello', 13, 'abc'));

function centerPad(str,len,fillStr){
    let endStr = str,
        strLen = str.length,
        fillLen = str.length;
    //第3条如果第二个参数传入的字符串长度比原来长度要短，直接返回原有字符串即可
    if(strLen > len){
        return str
    }

    let num = (len-strLen)/fillLen;

    
    return endStr
}







